﻿<!--As propriedades Width, Height, MaxHeight, MaxWidth, MinWidth podem ser usadas
para definir o tamanho padrão do controle. Assim quando o developer arrastar
o controle a partir da ToolBox, ele será criado com seu tamanho padrão-->
<Button x:Class="Controles.imageButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="211" Height="111"  MinHeight="90" MinWidth="120">
<Button.Template>
    <!--O ControlTemplate define o tipo de controle que será construido-->
    <ControlTemplate TargetType="{x:Type Button}">
        <!--Dois containers StackPanel e Grid acomodarão as imagens e o texto do botão-->
            <StackPanel Background="#FF2E6394" >
            <Grid Margin="0,5,100,0">
                <!--As imagens que indicam os estados Pressionado e Desativado ficarão ocultas-->
                <!--A propriedade Visibility="Hidden" se encarrega desta tarefa-->
                    <Image Name="Normal" Source="/MyMediaStore;component/Resources/new.png" Width="48" Height="48" />
                <Image Name="Pressed" />
                <Image Name="Disabled" />
            </Grid>
            <TextBlock TextAlignment="Center" FontWeight="Bold" 
                        Foreground="WhiteSmoke">Inserir texto</TextBlock>
        </StackPanel>
        <!--Aqui está o responsável pela troca de imagens de acordo com o estado do botão-->
        <!--Os Triggers podem ser usados para diversas aplicações, este é um bom exemplo-->
        <ControlTemplate.Triggers>
            <!--O primeiro Trigger avalia a propriedade IsPressed-->
            <Trigger Property="IsPressed" Value="True">
                <!--O elemento Setter através do atributo TargetName estabelece o vínculo com a 
imagem-->
                <!--e o atributo Property indica a Propriedade, Value atribui o valor desejado-->
                <Setter TargetName="Normal" Property="Visibility" Value="Hidden"/>
                <Setter TargetName="Pressed" Property="Visibility" Value="Visible"/>
            </Trigger>
                <!--O mesmo conceito é aplicado para avaliar a propriedade IsEnabled-->
            <Trigger Property="IsEnabled" Value="False">
                <Setter TargetName="Normal" Property="Visibility" Value="Hidden"/>
                <Setter TargetName="Disabled" Property="Visibility" Value="Visible"/>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>
</Button.Template>
</Button>